package org.example;

import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;

public class Parser {

    //导入java文档所在的绝对路径
    private static final String INPUT_PATH = "D:\\code\\java-document-search-engine\\jdk-8u441-docs-all\\docs\\api";

    public void run(){
        //整个parse的路口
        // 1.根据指定的路径,获取到当前路径之下所有的html文件
        ArrayList<File> files = new ArrayList<>();
        enumFile(files, INPUT_PATH);
        System.out.println(files);
        // 2. 针对以上罗列的路径, 打开文件, 读取文件内容,进行解析并构建索引
        for (File file : files) {
            System.out.println("开始解析" + file.getAbsolutePath());
            //通过方法解析单个HTML文件
            parseHTML(file);
        }
        // 3. 把内存中构建好的索引结构保存到指定文件之中
    }

    private void parseHTML(File file) {
        //解析对应的文件标题
        String title = parseTitle(file);
        //解析对应的URL
        String url = parseURL(file);
        //解析对应的正文内容(拿到正文在获取描述)
        String content = parseContent(file);
    }

    private String parseContent(File file) {
        return "";
    }

    private String parseURL(File file) {
        String part1 = "https://docs.oracle.com/javase/8/docs/api/";
        String part2 = file.getAbsolutePath().substring(INPUT_PATH.length());
        return part1 + part2;
    }

    private String parseTitle(File file) {
        String name = file.getName();
        return name.substring(0, name.length() - ".html".length());
    }


    //第一个参数表示递归得到的结果, 参数2表示从哪里开始遍历
    private void enumFile(ArrayList<File> filelist, String inputPath) {
        File rootPath = new File(inputPath);
        //listPath能够获取到rootPath当前目录下包含的文件
        File[] files = rootPath.listFiles();
//        System.out.println(Arrays.toString(files));//打印结果
//        System.out.println(files.length);//打印结果
        for (File file : files) {
            //递归寻找该目录下所有文件
            //如果file为普通文件则继续调用, 为目录文件则继续调用enumFile获取普通文件
            if(file.isFile()){
                if(file.toString().endsWith(".html"))
                     filelist.add(file);//加入到filelist之中
            }else {
                enumFile(filelist, file.getAbsolutePath());
            }
        }
    }

    public static void main(String[] args) {
        // 通过main方法来实现整个制作索引的过程
        Parser parser = new Parser();
        parser.run();
    }
}
